
userinfo = {'admin':'123456'}
balance = {'admin':5000}
telephone ={}

#登录检查是否存在用户，存在则返回用户名，不存在返回1
def usernamechk():
    username = input('输入用户名:')
    if username not in userinfo:
        count = 1
        for i in range(3):
            if count < 3:
                username = input("用户名错误，请再次输入:")
                if username not in userinfo:
                    count += 1
                else:
                    return username
            else:
                print("输入三次无效用户,退出登录:")
                return 1
    else:
        return username

#检查密码是否正确，正确返回0，不正确返回1
def passwordchk(user):
    password = input('输入密码:')
    if password  != userinfo[user]:
        count = 1
        for i in range(3):
            if count < 3:
                password = input('密码错误，请再次输入:')
                if password != userinfo[user]:
                    count += 1
                else:
                    return 0
            else:
                print("输入三次错误密码，退出登录:")
                return 1
    else:
        return 0

#通过主界面输入序号进入对应功能块，通过while True.....break返回主界面
def menu_interface(user):
    while True:
        print('---------------------------')
        print('|      应用       |  序号  |')
        print('---------------------------')
        print('|      注册       |   1    |')
        print('---------------------------')
        print('|     用户管理    |   2    |')
        print('|-------------------------|')
        print('|     退出系统    |   3    |')
        print('|-------------------------|')
        item_main = int(input('输入应用序号:'))

#注册模块，查看是否有存在用户，可通过q退出注册
        if item_main == 1:
            new_user = input('新用户名:')
            while new_user in userinfo:
                new_user = input('用户已存在,可输入q退出:')
                if new_user == 'q':
                    break
            new_user_passwd = input('用户密码:')
            userinfo[new_user] = new_user_passwd
            
#用户账号信息，用字典收集余额及电话信息
            balance[new_user] = 5000
            telephone[new_user] = input('联系电话:')
            print('注册成功，新用户余额为{}'.format(balance[new_user]))

#用户管理模块
        if item_main == 2:
            print('------------------------------------')
            print('|          应用          |   序号   |')
            print('------------------------------------')
            print('|          余额          |    1    |')
            print('------------------------------------')
            print('|          转账          |    2    |')
            print('|----------------------------------|')
            print('|          存款          |    3    |')
            print('|----------------------------------|')
            print('|          提现          |    4    |')
            print('|----------------------------------|')
            item_branch = int(input('输入应用序号:'))
#余额查询
            if item_branch == 1:
                print('账户余额：{}'.format(balance[user]))

#转账模块，先查看转账对象是否存在，再判断余额是否足够，中间可以选择查询余额和退出            
            if item_branch == 2:
                to_user = input('收款人:')
                while to_user not in userinfo:
                    to_user = input('''收款人不存在，请重新输入，或者输入q退出:''')
                    if to_user == 'q':
                        break
                if to_user in userinfo:
                    transfer_money = int(input('转账金额:'))
                    if transfer_money < balance[user]:
                        balance[user] = balance[user] - transfer_money
                        balance[to_user] = balance[to_user] + transfer_money
                        print('账户余额：{}'.format(balance[user]))
                    else:
                        choice1 = input('余额不足，输入00查看余额,输入01退出:')
                        if choice1 == '00':
                            print('账户余额：{}'.format(balance[user]))
                            choice2 = input('转款输入00,退出输入01:')
                            if choice2 == '00':
                                transfer_money = int(input('转账金额:'))
                                if transfer_money < balance[user]:
                                    balance[user] = balance[user] - transfer_money
                                    balance[to_user] = balance[to_user] + transfer_money
                                    print('账户余额:{}'.format(balance[user]))
                            if choice2 == '01':
                                print('退出提现')
                        if choice1 == '01':
                            print('退出提现')
#存款模块            
            if item_branch == 3:
                deposit_money = int(input('存款金额:'))
                balance[user] = balance[user] + deposit_money
                print('账户余额：{}'.format(balance[user]))

#取款模块，先判断余额是否足够，中间可以选择查看余额和退出           
            if item_branch == 4:
                withdrawal = int(input('提现金额:'))
                if withdrawal > balance[user]:
                    choice3 = input('余额不足，输入00查看余额,输入01退出:')
                    if choice3 == '00':
                        print('账户余额：{}'.format(balance[user]))
                        choice4 = input('转款输入00,退出输入01:')
                        if choice4 == '00':
                            withdrawal = int(input('提现金额:'))
                            print('账户余额：{}'.format(balance[user]))
                            if withdrawal < balance[user]:
                                balance[user] = balance[user] - withdrawal
                            else:
                                print('余额仍不足，退出应用：')
                        if  choice4 == '01':
                            print('退出提现')      
                    if choice3 == '01':
                        print('退出退出提现')
                else:
                    balance[user] = balance[user] - withdrawal
                    print('账户余额：{}'.format(balance[user]))

        if item_main == 3:
            return 1

    
        
#主函数模块
def main():
    login_user = usernamechk()
    if login_user == 1:
        return 1
    login_password = passwordchk(login_user)
    if login_password == 1:
        return 2
    menu_interface(login_user)

#循环执行
while True:
    main()
"""
if else 这些考虑下可以用：
case = input("Please input a case: ")
switch = {'1': 'case 1', '2': 'case 2', '3': 'case 3'}
print(switch.get(case,'Invalid input'))
可以不？
"""